#include<iostream>
#include<unistd.h>
#include<signal.h>

//int flag=1;
//主执行流里并没有修改flag的值,flag却被修改了,这个就叫做volatile易变关键字
volatile int flag=1;

void change(int sig)
{
    flag=0;
    std::cout<<"易变关键字flag被修改,1->0"<<std::endl;
}


int main()
{
    ::signal(2,change); //信号捕捉的执行流,只有捕捉到信号才执行
    while(flag)  //主执行流
    {
        std::cout<<"死循环进行中"<<std::endl;
        sleep(1);
    }
    std::cout<<"程序正常退出,且主执行流并未修改flag的值"<<std::endl;
    return 0;
}